﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using PServiceBus.Core.Runtime.Topics;
using PServiceBus.Core.Runtime.Transports;

namespace PServiceBus.Core.Interface
{
    /// <summary>
    /// Represent a subscriber
    /// </summary>
    public interface ISubscriber : IIdentifiable
    {
        /// <summary>
        /// Name of subscriber instance.
        /// </summary>
        string Name { get; set; }

        /// <summary>
        /// List subscriber's subscriptions
        /// </summary>
        IList<SubscriptionEntry> Subscriptions { get; set; }

        /// <summary>
        /// Transport methods: HTTP, WCF, MsQueue, RabbitMQ, RavenDb, e.t.c
        /// </summary>
        IList<TransportInfo> Transports { get; set; }

        /// <summary>
        /// Indicate whether subscriber is durable, meaning messages are kept until acknowledged by subscriber if message is not expired
        /// </summary>
        bool Durable { get; set; }
    }
}
